package com.learn.validator;

import com.learn.base.ApiResult;
import com.learn.base.ApiResultUtils;
import com.learn.dto.req.AddProductReq;
import com.learn.dto.req.UpdateProductReq;
import com.learn.emuns.LearnResultEnums;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;

@Component
public class ProductValidate {
    public static ApiResult<Boolean> validateAddProduct(AddProductReq req) {
        if (StringUtils.isEmpty(req.getProductId())) {
            return ApiResultUtils.build(LearnResultEnums.PRODUCT_ID_NULL.getStatus(), LearnResultEnums.PRODUCT_ID_NULL.getErrMsg(), false);
        }
        if (StringUtils.isEmpty(req.getProductItemId())){
            return ApiResultUtils.build(LearnResultEnums.PRODUCT_ITEM_ID_NULL.getStatus(), LearnResultEnums.PRODUCT_ITEM_ID_NULL.getErrMsg(), false);
        }

        if (StringUtils.isEmpty(req.getResourcePool())){
            return ApiResultUtils.build(LearnResultEnums.RESOURCE_POOL_NULL.getStatus(), LearnResultEnums.RESOURCE_POOL_NULL.getErrMsg(), false);
        }

        if (req.getStartTime() ==null || req.getEndTime() == null){
            return ApiResultUtils.build(LearnResultEnums.TIME_NULL.getStatus(), LearnResultEnums.TIME_NULL.getErrMsg(), false);

        }

        if (!req.getEndTime().isAfter(req.getStartTime())){
            return ApiResultUtils.build(LearnResultEnums.TIME_RANGE.getStatus(), LearnResultEnums.TIME_RANGE.getErrMsg(), false);

        }

        if (StringUtils.isEmpty(req.getDescription())){
            return ApiResultUtils.build(LearnResultEnums.DESCRIPTION_NULL.getStatus(), LearnResultEnums.DESCRIPTION_NULL.getErrMsg(), false);

        }
        return ApiResultUtils.buildSuccess(true);
    }
    public static ApiResult<Boolean> validateUpdateProduct(UpdateProductReq req) {
        if (StringUtils.isEmpty(req.getName ())) {
            return ApiResultUtils.build(LearnResultEnums.PRODUCT_ID_NULL.getStatus(), LearnResultEnums.PRODUCT_ID_NULL.getErrMsg(), false);
        }
        if (StringUtils.isEmpty(req.getProductItemId())){
            return ApiResultUtils.build(LearnResultEnums.PRODUCT_ITEM_ID_NULL.getStatus(), LearnResultEnums.PRODUCT_ITEM_ID_NULL.getErrMsg(), false);
        }

        if (StringUtils.isEmpty(req.getResourcePool())){
            return ApiResultUtils.build(LearnResultEnums.RESOURCE_POOL_NULL.getStatus(), LearnResultEnums.RESOURCE_POOL_NULL.getErrMsg(), false);
        }

        if (req.getStartTime() ==null || req.getEndTime() == null){
            return ApiResultUtils.build(LearnResultEnums.TIME_NULL.getStatus(), LearnResultEnums.TIME_NULL.getErrMsg(), false);

        }

        if (!req.getEndTime().isAfter(req.getStartTime())){
            return ApiResultUtils.build(LearnResultEnums.TIME_RANGE.getStatus(), LearnResultEnums.TIME_RANGE.getErrMsg(), false);

        }

        if (StringUtils.isEmpty(req.getDescription())){
            return ApiResultUtils.build(LearnResultEnums.DESCRIPTION_NULL.getStatus(), LearnResultEnums.DESCRIPTION_NULL.getErrMsg(), false);

        }
        return ApiResultUtils.buildSuccess(true);
    }

}
